package validate

import "gorm.io/datatypes"

// 视频返回数据
type VideoMetadata struct {
	MediaMetadata
	SourcePath   string `json:"source_path"`
	OutThumbPath string `json:"out_thumb_path"`
	OutVideoPath string `json:"out_video_path"`
}

type AddMedia struct {
	Md5Name      string         `json:"md5_name"`
	Md5          string         `json:"md5"`
	Type         string         `json:"type"`
	Status       string         `json:"status"`
	RelativePath string         `json:"relative_path"`
	Param        datatypes.JSON `json:"param"`
	Uuid         string         `json:"uuid"`
}

// 媒体返回数据
type MediaMetadata struct {
	MediaId      uint64 `json:"media_id"`
	Md5Name      string `json:"md5_name"`
	Md5          string `json:"md5"`
	Folder       string `json:"folder"`
	Type         string `json:"type"`
	Path         string `json:"path"`
	Size         string `json:"size"`
	FileSize     int64  `json:"file_size"`
	Width        int    `json:"width"`
	Height       int    `json:"height"`
	Duration     string `json:"duration"`
	Rate         string `json:"rate"`
	NamePrefix   string `json:"name_prefix"`
	Ext          string `json:"ext"`
	Thumb        string `json:"thumb"`
	RelativePath string `json:"relative_path"`
}

type UploadMedia struct {
	Size string `json:"size" binding:"required"`
}

type TranscodeVideoParam struct {
	TempPath string `json:"temp_path"`
	Duration string `json:"duration"`
	Path     string `json:"path"`
	Md5Name  string `json:"md5_name"`
	Width    int    `json:"width"`
	Height   int    `json:"height"`
}

type MediaMd5sFilter struct {
	Md5Name string `json:"md5_name" binding:"required"`
}

type ConvertAudioFormat struct {
	TempPath   string `json:"temp_path"`
	Path       string `json:"path"`
	Md5Name    string `json:"md5_name"`
	FileFormat string `json:"file_format"`
}

type ExtractMp3 struct {
	TempPath string `json:"temp_path"`
	Path     string `json:"path"`
	Md5Name  string `json:"md5_name"`
}
